/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package my.cbr.casedescriptions;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import jcolibri.cbrcore.Attribute;
import jcolibri.cbrcore.CaseComponent;
import my.cbr.database.model.AquacultureProdUnit;
import my.cbr.database.model.AquacultureSite;
import my.cbr.database.model.measurement.MeasurementType;
import my.cbr.database.model.measurement.OxygenInstance;
import my.cbr.database.model.measurement.TemperatureInstance;

/**
 *
 * @author Geir Ole
 */
public class CaseDescription implements CaseComponent{

    private Integer caseID;
    private Date dateTime;
    private AquacultureSite aquacultureSite;
    private AquacultureProdUnit receivingProdUnit;
    private List<AquacultureProdUnit> sendingProdUnits = new ArrayList<AquacultureProdUnit>();
    private MeasurementType<TemperatureInstance> temperature;
    private MeasurementType<OxygenInstance> oxygen;
    private CaseSolution caseSolution;

    public CaseSolution getCaseSolution() {
        return caseSolution;
    }

    public void setCaseSolution(CaseSolution caseSolution) {
        this.caseSolution = caseSolution;
    }

    /**
     * Get the value of dateTime
     *
     * @return the value of dateTime
     */
    public Date getDateTime() {
        return dateTime;
    }

    /**
     * Set the value of dateTime
     *
     * @param dateTime new value of dateTime
     */
    public void setDateTime(Date dateTime) {
        this.dateTime = dateTime;
    }

    /**
     * Get the value of oxygen
     *
     * @return the value of oxygen
     */
    public MeasurementType<OxygenInstance> getOxygen() {
        return oxygen;
    }

    /**
     * Set the value of oxygen
     *
     * @param oxygen new value of oxygen
     */
    public void setOxygen(MeasurementType<OxygenInstance> oxygen) {
        this.oxygen = oxygen;
    }

    /**
     * Get the value of temperature
     *
     * @return the value of temperature
     */
    public MeasurementType<TemperatureInstance> getTemperature() {
        return temperature;
    }

    /**
     * Set the value of temperature
     *
     * @param temperature new value of temperature
     */
    public void setTemperature(MeasurementType<TemperatureInstance> temperature) {
        this.temperature = temperature;
    }

    /**
     * Get the value of sendingProdUnits
     *
     * @return the value of sendingProdUnits
     */
    public List<AquacultureProdUnit> getSendingProdUnits() {
        return sendingProdUnits;
    }

    /**
     * Set the value of sendingProdUnits
     *
     * @param sendingProdUnits new value of sendingProdUnits
     */
    public void setSendingProdUnits(List<AquacultureProdUnit> sendingProdUnits) {
        this.sendingProdUnits = sendingProdUnits;
    }

    /**
     * Get the value of receivingProdUnit
     *
     * @return the value of receivingProdUnit
     */
    public AquacultureProdUnit getReceivingProdUnit() {
        return receivingProdUnit;
    }

    /**
     * Set the value of receivingProdUnit
     *
     * @param receivingProdUnit new value of receivingProdUnit
     */
    public void setReceivingProdUnit(AquacultureProdUnit receivingProdUnit) {
        this.receivingProdUnit = receivingProdUnit;
    }

    /**
     * Get the value of aquacultureSite
     *
     * @return the value of aquacultureSite
     */
    public AquacultureSite getAquacultureSite() {
        return aquacultureSite;
    }

    /**
     * Set the value of aquacultureSite
     *
     * @param aquacultureSite new value of aquacultureSite
     */
    public void setAquacultureSite(AquacultureSite aquacultureSite) {
        this.aquacultureSite = aquacultureSite;
    }

    /**
     * Get the value of caseID
     *
     * @return the value of caseID
     */
    public Integer getCaseID() {
        return caseID;
    }

    /**
     * Set the value of caseID
     *
     * @param caseID new value of caseID
     */
    public void setCaseID(Integer caseID) {
        this.caseID = caseID;
    }

    public Attribute getIdAttribute() {
        return new Attribute("caseID", this.getClass());
    }

    @Override
    public String toString() {
        return "CaseDescription{" + "caseID=" + caseID + ", dateTime=" + dateTime + ", aquacultureSite=" + aquacultureSite + ", receivingProdUnit=" + receivingProdUnit + ", sendingProdUnits=" + sendingProdUnits + ", temperature=" + temperature + ", oxygen=" + oxygen + '}';
    }
}
